home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / cpp_libs / nihcl-30.lha / nihcl-3.0 / lib / Link.h < prev    next >
C/C++ Source or Header  |  1990-05-19  |  2KB  |  54 lines

  1. #ifndef    LINK_H
  2. #define    LINK_H
  3.  
  4. /*$Header: /afs/alw.nih.gov/unix/sun4_40c/usr/local/src/nihcl-3.0/share/lib/RCS/Link.h,v 3.0 90/05/20 00:20:02 kgorlen Rel $*/
  5.  
  6. /* Link.h -- declarations for singly-linked list element
  7.  
  8.     THIS SOFTWARE FITS THE DESCRIPTION IN THE U.S. COPYRIGHT ACT OF A
  9.     "UNITED STATES GOVERNMENT WORK".  IT WAS WRITTEN AS A PART OF THE
  10.     AUTHOR'S OFFICIAL DUTIES AS A GOVERNMENT EMPLOYEE.  THIS MEANS IT
  11.     CANNOT BE COPYRIGHTED.  THIS SOFTWARE IS FREELY AVAILABLE TO THE
  12.     PUBLIC FOR USE WITHOUT A COPYRIGHT NOTICE, AND THERE ARE NO
  13.     RESTRICTIONS ON ITS USE, NOW OR SUBSEQUENTLY.
  14.  
  15. Author:
  16.     K. E. Gorlen
  17.     Computer Systems Laboratory, DCRT
  18.     National Institutes of Health
  19.     Bethesda, MD 20892
  20.  
  21. $Log:    Link.h,v $
  22.  * Revision 3.0  90/05/20  00:20:02  kgorlen
  23.  * Release for 1st edition.
  24.  * 
  25. */
  26.  
  27. #include "Object.h"
  28.  
  29. class LinkedList;
  30.  
  31. class Link: public VIRTUAL Object {    // abstract class
  32.     DECLARE_MEMBERS(Link);
  33.     Link* next;            // pointer to next Link or nil 
  34.     static Link *const nilLink;    // end of list marker
  35.     friend LinkedList;
  36. protected:
  37.     Link()                { next = NULL; }
  38.     Link(Link* nextlink)        { next = nextlink; }
  39.     Link(const Link&)        { next = NULL; }
  40. public:
  41.     ~Link();
  42.     Link* nextLink() const        { return next; }
  43.     Link* nextLink(Link* nextlink)    { next = nextlink; return next; }
  44.     bool isListEnd() const        { return this == nilLink; }
  45.     virtual int compare(const Object&) const = 0;
  46.     virtual Object* copy() const;    // deepCopy()
  47.     virtual void deepenShallowCopy();
  48.     virtual unsigned hash() const = 0;
  49.     virtual bool isEqual(const Object&) const = 0;
  50.     virtual void printOn(ostream& strm =cout) const = 0;
  51. };
  52.  
  53. #endif
  54.